package com.atguigu.tingshu.cdc.handler;

import com.atguigu.tingshu.cdc.entity.CdcEntity;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import top.javatool.canal.client.annotation.CanalTable;
import top.javatool.canal.client.handler.EntryHandler;

/**
 * <a href="https://www.shallowrecall.top/">Recall`Blog</a></br>
 * <a href="https://github.com/ShallowRecall">GitHub</a>
 *
 * @author Recall
 * @createTime 2025/03/27 16:16
 **/
@Component
@CanalTable("album_info")
@Slf4j
public class CdcEntityHandler implements EntryHandler<CdcEntity> {

    /**
     * album_info表中有数据新增的时候 会回调该方法
     *
     * @param cdcEntity
     */
    @Override
    public void insert(CdcEntity cdcEntity) {
        log.info("canal客户端监听到了album_info表中有数据的新增：{}", cdcEntity);
    }

    /**
     * album_info表中有数据更新的时候 会回调该方法
     * CdcEntity before：修改之前的老数据
     * CdcEntity after：修改之后的新数据
     *
     * @param before
     * @param after
     */
    @Override
    public void update(CdcEntity before, CdcEntity after) {
        log.info("canal客户端监听到了album_info表中有数据的修改，修改之前：{}，修改之后{}", before, after);
    }

    /**
     * album_info表中有数据删除的时候 会回调该方法
     * CdcEntity cdcEntity 删除的数据
     *
     * @param cdcEntity
     */
    @Override
    public void delete(CdcEntity cdcEntity) {
        log.info("canal客户端监听到了album_info表中有数据的删除：{}", cdcEntity);
    }
}
